1. Field of the Invention
This invention relates generally to computer systems and more particularly to a system and method for accounting for the time a process spends in the running, ready, or wait state.
2. Description of the Prior Art
Electronic computers have grown from first generation hardware characterized mainly by vacuum tubes, to second generation hardware characterized by transistors, to third generation hardware characterized, in the main, by integrated circuits. Along with these different generations of hardware there were different generations of software, wherein first generation software was characterized mainly by machine language, assemblers and subroutines, and second generation software was characterized by high-level languages, monitors, and macro-assemblers. Third generation software is characterized by operating systems, on-line real-time systems, multiprogramming systems, and data management systems.
The first generation hardware in combination with first generation software, and also the second generation hardware in combination with second generation software were primarily oriented toward batch processing where jobs were executed primarily in serial fashion. Moreover the third generation of hardware/software systems are also batch-process oriented; however, because of the advent of multiprogramming, several jobs may be executed in parallel rather than serial, and this permits the acceptance of input information for processing as it is generated.
The fourth generation system will be capable of satisfying the following requirements:
1. "The system will be classified as a communication and control system and will be capable of widely diversified processor applications. Intrasystem and intersystem communication interface will be required for both hardware and software.
2. "The system will be controlled primarily by data rather than by programs as were previous machines: i.e., system control will be established primarily by input rather than by stored instructions. Development of this characteristic is dependent upon submission of information in real-time. Feedback is a key consideration, Proper interactions between intersystem and intrasystem interfaces is vital. The interrelationships between data (communication bits) and programs (information bits) must be carefully defined.
"Multiple shift registers, large low-cost read-only memories, and batch-fabricated multifunction semicondutor devices make new computer organization feasible. Logic elements will perform a variety of tasks. For example, steering flip-flops will identify specific operations. These flip-flops will be set by serial or serial-parallel insertion of bits onto a subset of the leads to each logic package and an appropriate combination of clock and control signals. Data will be directed to a storage element with a more general (or rapid) access to other points in the system. Self-reconfiguration techniques and variable control memory structures will be possible because of steering flip-flops which identify inputs as control data, operating information, or data to be manipulated. Thus, main memory or scratch pad memory will temporarily assume the functions of control memory in the computer. Reconfiguration of a computer organization on a seemingly instantaneous basis will be possible. Parallel processing will be readily performed.
3. "Hardware will govern communication and control procedures; use of system control programs will be substantially reduced or eliminated. This characteristic is closely related to the preceding one. Focalizing system design by application of communication networks will eliminate much of the need for software and facilitate system control. Again, consideration of both intersystem and intrasystem data flow is important. When such techniques are applied, requirements for software control of the system will be minimized.
4. "Most processing will be executed in real-time; operations will be performed on input at a rate that provides output within the required response time. Real time, as discussed here, does not imply interleaving of programs or the man-machine interaction of time sharing. Rather, the implication is that the system will accept data as it is made available and process this data within the constraints imposed by desired response times.
5. "The system will be readily expandable. Hardware and software will be functionally modular in design. Computing power will be modified without redesign of the system. A variable instruction set is not implied. However, nested subsets of hardware will be available to complement nested subsets of software. In fact, this nesting of software is currently practiced. The user's software commonly includes both action macros and system macros. system macros commonly contain nested macros which perform communication functions for specified terminal devices. Such macros can be removed or specialized; system modularity results. Impetus is given to applying the family concept in the hardware (e.g. terminal) design." (Fourth Generation Computers: User Requirements and Transition; "The Significance of the Next Generation: Technical Keynote Presentation" by Dr. C. J. Walter and Arline Bohl Walter. Edited by Fred Gruenberger, Prentice-Hall Inc. Englewood Cliffs, N.J. 1970 pps. 16-17 by permission of the publisher).
Processing in first generation hardware-software computer systems was relatively straightforward where the job or program was considered the basic processing unit. For each user initiated job or transaction, a program generally ran with little or no interruption until the job or transaction was completed. Many straightforward jobs such as the compilation and execution of a high level language program, such as FORTRAN, could and did run as a single process. More difficult jobs, however, would require multitask operations and they would create other processes as they ran. (Note that a process is a concept implying the carrying on of some activity and should not be confused with the concept of a program, which is an activity description and can be used by one or more processes. We can speak either of a process or a processor executing a program. See Glossary of Definitions).
The concept of a process as being the basic processing unit developed to fill a need for the multiprogramming/multiprocessing environment of third generation computers. In such an environment where many users are demanding service simultaneously, it is natural to conceive of multiple processes competing for resources within the computer system. Each process consists of a program (i.e. an ordered collection of instructions and other data associated with the instructions) which is executed by the computer and operates on data to perform a user's job or some phase of that job. Where many such processes are demanding simultaneous attention from the system, the task of communicating with and between such processes and the task of controlling and allocating resources and providing accounting services to such processes particularly in view of the requirements of fourth generation systems become extremely complex. Most systems providing accounting services utilize software techniques and a plurality of instructions for directing the updating of the accounting mechanisms. This entails considerable computer overhead, slower speed and a relinquishing of memory space to the program doing the accounting. What is needed is a firmware/hardware technique for performing accounting services.